package com.zlb.app.utils;

import cn.hutool.core.collection.CollUtil;

import java.lang.reflect.Field;
import java.util.List;

/**
 * @Desc 属性工具类
 * @Author zWX1367238
 * @Date 2024-08-16 09:33:05
 **/
public class FieldUtils {

    /**
     * 检查是否所有字段为空
     * @param obj 检查对象
     * @return 全部为空返回true,否则false
     */
    public static boolean allFieldsIsNull(Object obj) {
        try {
            for (Field field : obj.getClass().getDeclaredFields()) {
                if (field.getName().equals("serialVersionUID")) {
                    continue;
                }
                field.setAccessible(true);
                if (field.get(obj) != null) {
                    return false;
                }
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * 检查所有属性是否为空,可指定忽略字段
     * @param obj 检查对象
     * @param ignoreNames 忽略字段
     * @return 为空返回true
     */
    public static boolean allFieldsIsNull(Object obj, List<String> ignoreNames) {
        try {
            for (Field field : obj.getClass().getDeclaredFields()) {
                if (field.getName().equals("serialVersionUID")) {
                    continue;
                }
                if (CollUtil.isNotEmpty(ignoreNames) && ignoreNames.contains(field.getName())) {
                    continue;
                }
                field.setAccessible(true);
                if (field.get(obj) != null) {
                    return false;
                }
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

}
